package template;

public abstract class SoyaMilk {

    //模板方法，make，模板方法可以做成final,不让子类去覆盖
    final void make(){
        select();
        soak();
        if(hook()){
            addCondiments();
        }
        beat();
    }

    void select(){
        System.out.println("第一步：");
    }

    abstract void addCondiments();

    void soak(){
        System.out.println("第二步：");
    }

    void beat(){
        System.out.println("第四步：");
    }

    /**
     * 定义的钩子方法
     * @return
     */
    boolean hook(){
        return true;
    }
}
